"""
https://leetcode.cn/problems/add-strings/description/

415. 字符串相加
已解答
简单
相关标签
premium lock icon
相关企业
给定两个字符串形式的非负整数 num1 和num2 ，计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库（比如 BigInteger）， 也不能直接将输入的字符串转换为整数形式。

 

示例 1：

输入：num1 = "11", num2 = "123"
输出："134"
示例 2：

输入：num1 = "456", num2 = "77"
输出："533"
示例 3：

输入：num1 = "0", num2 = "0"
输出："0"
 

 

提示：

1 <= num1.length, num2.length <= 104
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零

"""
class Solution:
    """
    相当于复刻计算器的加法算法
    """
    def addStrings(self, num1: str, num2: str) -> str:
        i=0
        add_next=False
        chars=[]
        while i<len(num1) or i<len(num2):
            idx1=len(num1)-1-i
            idx2=len(num2)-1-i

            val1=ord(num1[idx1])-ord('0') if idx1>=0 else 0
            val2=ord(num2[idx2])-ord('0') if idx2>=0 else 0

            sum=val1+val2+(1 if add_next else 0)
            # print(f'{i},{val1},{val2},{add_next}')
            add_next=sum>=10
            chars.append(str(sum%10))

            i+=1

        if add_next:
            chars.append('1')

        return ''.join(chars[::-1])
    
if __name__=='__main__':
    num1='0'
    num2='0'

    s=Solution()
    res=s.addStrings(num1,num2)
    print(res)